package club.babyf.nativeai.demo.algorithm;

/**
 * ReorderArray.
 *
 * @author zhanglei.
 * @date 2025/4/26 20:27.
 * @description 重新排列数组.
 */
public class _8_ReorderArray {

    public void reorderArray(int[] arr) {
        if (arr == null || arr.length == 0) {
            return;
        }
        int left = 0;
        int right = arr.length - 1;
        while (left < right) {
            // 判断左边数据是不是偶数，如果是偶数继续往下走，不是偶数移动左边数据下标
            while (left < right && arr[left] % 2 != 0) {
                left++;
            }
            // 判断右边数据是不是奇数，如果是奇数继续往下走，不是奇数移动右边数据下标
            while (left < right && arr[right] % 2 == 0) {
                right--;
            }
            // 判断左右两边下标的位置
            if (left < right) {
                int tmp = arr[left];
                arr[left] = arr[right];
                arr[right] = tmp;
                left++;
                right--;
            }
        }
    }

    private void print(int[] arr) {
        for (int i : arr) {
            System.out.print(i + " | ");
        }
        System.out.println();
    }

    public static void main(String[] args) {
        _8_ReorderArray reorderArray = new _8_ReorderArray();
        int[] arr = {5, 3, 6, 7, 9, 1, 2};
        reorderArray.print(arr);
        reorderArray.reorderArray(arr);
        reorderArray.print(arr);
    }

}
